<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>java基础面试题七 | 小狐档案库</title>
    <meta name="generator" content="VuePress 1.8.2">
    <link rel="icon" href="/favicon.ico">
    <meta name="description" content="学习资料">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    
    <link rel="preload" href="/assets/css/0.styles.0c36f186.css" as="style"><link rel="preload" href="/assets/js/app.7029ddab.js" as="script"><link rel="preload" href="/assets/js/3.ebaa3085.js" as="script"><link rel="preload" href="/assets/js/1.8ce67e8c.js" as="script"><link rel="preload" href="/assets/js/57.0cea0cfa.js" as="script"><link rel="prefetch" href="/assets/js/10.15c1f9c8.js"><link rel="prefetch" href="/assets/js/11.dc2fbddf.js"><link rel="prefetch" href="/assets/js/12.26ab1f36.js"><link rel="prefetch" href="/assets/js/13.6e1d4dbc.js"><link rel="prefetch" href="/assets/js/14.0cd48e80.js"><link rel="prefetch" href="/assets/js/15.74a9f029.js"><link rel="prefetch" href="/assets/js/16.24ef3382.js"><link rel="prefetch" href="/assets/js/17.c8a9bd0f.js"><link rel="prefetch" href="/assets/js/18.fbd494c2.js"><link rel="prefetch" href="/assets/js/19.f9a0df71.js"><link rel="prefetch" href="/assets/js/20.e6d0df38.js"><link rel="prefetch" href="/assets/js/21.932645cc.js"><link rel="prefetch" href="/assets/js/22.d6027dce.js"><link rel="prefetch" href="/assets/js/23.53bce141.js"><link rel="prefetch" href="/assets/js/24.ed3b8b64.js"><link rel="prefetch" href="/assets/js/25.ed88877e.js"><link rel="prefetch" href="/assets/js/26.f5ad24d5.js"><link rel="prefetch" href="/assets/js/27.64ad45b4.js"><link rel="prefetch" href="/assets/js/28.f308f8ab.js"><link rel="prefetch" href="/assets/js/29.4d95742d.js"><link rel="prefetch" href="/assets/js/30.0a867de0.js"><link rel="prefetch" href="/assets/js/31.f12def86.js"><link rel="prefetch" href="/assets/js/32.6b4fd8b7.js"><link rel="prefetch" href="/assets/js/33.4bb2aa9c.js"><link rel="prefetch" href="/assets/js/34.013e731c.js"><link rel="prefetch" href="/assets/js/35.6b263ef8.js"><link rel="prefetch" href="/assets/js/36.06acf3cc.js"><link rel="prefetch" href="/assets/js/37.fe72c29c.js"><link rel="prefetch" href="/assets/js/38.9b4e0bd6.js"><link rel="prefetch" href="/assets/js/39.0cde0408.js"><link rel="prefetch" href="/assets/js/4.9b5650bb.js"><link rel="prefetch" href="/assets/js/40.56bda9a8.js"><link rel="prefetch" href="/assets/js/41.007ae34c.js"><link rel="prefetch" href="/assets/js/42.bdaf414b.js"><link rel="prefetch" href="/assets/js/43.78d32d4e.js"><link rel="prefetch" href="/assets/js/44.a10cf8a5.js"><link rel="prefetch" href="/assets/js/45.19e14721.js"><link rel="prefetch" href="/assets/js/46.57ebcf06.js"><link rel="prefetch" href="/assets/js/47.9a513ffe.js"><link rel="prefetch" href="/assets/js/48.245b165a.js"><link rel="prefetch" href="/assets/js/49.fab43655.js"><link rel="prefetch" href="/assets/js/5.a16ef7f8.js"><link rel="prefetch" href="/assets/js/50.48c191fd.js"><link rel="prefetch" href="/assets/js/51.28a94b0e.js"><link rel="prefetch" href="/assets/js/52.e783fbf9.js"><link rel="prefetch" href="/assets/js/53.2f0e960e.js"><link rel="prefetch" href="/assets/js/54.577ff54e.js"><link rel="prefetch" href="/assets/js/55.4bb99598.js"><link rel="prefetch" href="/assets/js/56.e820e954.js"><link rel="prefetch" href="/assets/js/58.e31cfcd0.js"><link rel="prefetch" href="/assets/js/59.458ab168.js"><link rel="prefetch" href="/assets/js/6.7da424ba.js"><link rel="prefetch" href="/assets/js/60.e9caace2.js"><link rel="prefetch" href="/assets/js/61.0b61afdb.js"><link rel="prefetch" href="/assets/js/62.c240acab.js"><link rel="prefetch" href="/assets/js/63.71cd2a97.js"><link rel="prefetch" href="/assets/js/64.977ea29b.js"><link rel="prefetch" href="/assets/js/65.79b2d62a.js"><link rel="prefetch" href="/assets/js/66.8da69071.js"><link rel="prefetch" href="/assets/js/67.fdc57d7e.js"><link rel="prefetch" href="/assets/js/68.d43eabe9.js"><link rel="prefetch" href="/assets/js/7.6e92edd1.js"><link rel="prefetch" href="/assets/js/8.2389170b.js"><link rel="prefetch" href="/assets/js/9.77841f24.js">
    <link rel="stylesheet" href="/assets/css/0.styles.0c36f186.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container" data-v-1156296a><div data-v-1156296a><div id="loader-wrapper" class="loading-wrapper" data-v-d48f4d20 data-v-1156296a data-v-1156296a><div class="loader-main" data-v-d48f4d20><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div></div> <!----> <!----></div> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-4e82dffc data-v-1156296a data-v-1156296a><h3 class="title" data-v-4e82dffc data-v-4e82dffc>小狐档案库</h3> <p class="description" data-v-4e82dffc data-v-4e82dffc>学习资料</p> <label id="box" class="inputBox" data-v-4e82dffc data-v-4e82dffc><input type="password" value="" data-v-4e82dffc> <span data-v-4e82dffc>Konck! Knock!</span> <button data-v-4e82dffc>OK</button></label> <div class="footer" data-v-4e82dffc data-v-4e82dffc><span data-v-4e82dffc><i class="iconfont reco-theme" data-v-4e82dffc></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-4e82dffc>vuePress-theme-reco</a></span> <span data-v-4e82dffc><i class="iconfont reco-copyright" data-v-4e82dffc></i> <a data-v-4e82dffc><span data-v-4e82dffc>小狐</span>
            
          <span data-v-4e82dffc>2021-9-1 - </span>
          2021
        </a></span></div></div> <div class="hide" data-v-1156296a><header class="navbar" data-v-1156296a><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="小狐档案库" class="logo"> <span class="site-name">小狐档案库</span></a> <div class="links"><div class="color-picker"><a class="color-button"><i class="iconfont reco-color"></i></a> <div class="color-picker-menu" style="display:none;"><div class="mode-options"><h4 class="title">Choose mode</h4> <ul class="color-mode-options"><li class="dark">dark</li><li class="auto active">auto</li><li class="light">light</li></ul></div></div></div> <div class="search-box"><i class="iconfont reco-search"></i> <input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  首页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/GO/" class="nav-link"><i class="undefined"></i>
  GO
</a></li><li class="dropdown-item"><!----> <a href="/categories/面试系列/" class="nav-link"><i class="undefined"></i>
  面试系列
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  Tag
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  足迹
</a></div><div class="nav-item"><a href="https://www.xiaohu.team" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-message"></i>
  摇光图库
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-1156296a></div> <aside class="sidebar" data-v-1156296a><div class="personal-info-wrapper" data-v-828910c6 data-v-1156296a><img src="/avatar.jpg" alt="author-avatar" class="personal-img" data-v-828910c6> <h3 class="name" data-v-828910c6>
    小狐
  </h3> <div class="num" data-v-828910c6><div data-v-828910c6><h3 data-v-828910c6>58</h3> <h6 data-v-828910c6>Articles</h6></div> <div data-v-828910c6><h3 data-v-828910c6>20</h3> <h6 data-v-828910c6>Tags</h6></div></div> <ul class="social-links" data-v-828910c6></ul> <hr data-v-828910c6></div> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  首页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/GO/" class="nav-link"><i class="undefined"></i>
  GO
</a></li><li class="dropdown-item"><!----> <a href="/categories/面试系列/" class="nav-link"><i class="undefined"></i>
  面试系列
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  Tag
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  足迹
</a></div><div class="nav-item"><a href="https://www.xiaohu.team" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-message"></i>
  摇光图库
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>面试系列</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading open"><span>java</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading open"><span>java基础系列</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/blogs/audition/java/java_base/base_1.html" class="sidebar-link">java基础面试题一</a></li><li><a href="/blogs/audition/java/java_base/base_2.html" class="sidebar-link">java基础面试题二</a></li><li><a href="/blogs/audition/java/java_base/base_3.html" class="sidebar-link">java基础面试题三</a></li><li><a href="/blogs/audition/java/java_base/base_4.html" class="sidebar-link">java基础面试题四</a></li><li><a href="/blogs/audition/java/java_base/base_5.html" class="sidebar-link">java基础面试题四</a></li><li><a href="/blogs/audition/java/java_base/base_6.html" class="sidebar-link">java基础面试题六</a></li><li><a href="/blogs/audition/java/java_base/base_7.html" aria-current="page" class="active sidebar-link">java基础面试题七</a></li><li><a href="/blogs/audition/java/java_base/base_8.html" class="sidebar-link">java基础面试题八</a></li></ul></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>并发编程系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>Spring系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>SpringBoot系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-2"><p class="sidebar-heading"><span>Mybatis系列</span> <span class="arrow right"></span></p> <!----></section></li></ul></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>redis系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>消息队列系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>zookeeper系列</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable is-sub-group depth-1"><p class="sidebar-heading"><span>Linux系列</span> <span class="arrow right"></span></p> <!----></section></li></ul></section></li></ul> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-4e82dffc data-v-1156296a><h3 class="title" data-v-4e82dffc data-v-4e82dffc>java基础面试题七</h3> <!----> <label id="box" class="inputBox" data-v-4e82dffc data-v-4e82dffc><input type="password" value="" data-v-4e82dffc> <span data-v-4e82dffc>Konck! Knock!</span> <button data-v-4e82dffc>OK</button></label> <div class="footer" data-v-4e82dffc data-v-4e82dffc><span data-v-4e82dffc><i class="iconfont reco-theme" data-v-4e82dffc></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-4e82dffc>vuePress-theme-reco</a></span> <span data-v-4e82dffc><i class="iconfont reco-copyright" data-v-4e82dffc></i> <a data-v-4e82dffc><span data-v-4e82dffc>小狐</span>
            
          <span data-v-4e82dffc>2021-9-1 - </span>
          2021
        </a></span></div></div> <div data-v-1156296a><main class="page"><section><div class="page-title"><h1 class="title">java基础面试题七</h1> <div data-v-1ff7123e><i class="iconfont reco-account" data-v-1ff7123e><span data-v-1ff7123e>小狐</span></i> <i class="iconfont reco-date" data-v-1ff7123e><span data-v-1ff7123e>9/11/2021</span></i> <!----> <i class="tags iconfont reco-tag" data-v-1ff7123e><span class="tag-item" data-v-1ff7123e>java</span><span class="tag-item" data-v-1ff7123e>Java基础</span></i></div></div> <div class="theme-reco-content content__default"><h3 id="_81、说出几条-java-中方法重载的最佳实践"><a href="#_81、说出几条-java-中方法重载的最佳实践" class="header-anchor">#</a> 81、说出几条 Java 中方法重载的最佳实践？</h3> <p>下面有几条可以遵循的方法重载的最佳实践来避免造成自动装箱的混乱。</p> <p>a）不要重载这样的方法：一个方法接收 int 参数，而另个方法接收 Integer 参数。</p> <p>b）不要重载参数数量一致，而只是参数顺序不同的方法。</p> <p>c）如果重载的方法参数个数多于 5 个，采用可变参数。</p> <h3 id="_82、在多线程环境下-simpledateformat-是线程安全的吗"><a href="#_82、在多线程环境下-simpledateformat-是线程安全的吗" class="header-anchor">#</a> 82、在多线程环境下，SimpleDateFormat 是线程安全的吗？</h3> <p>不是，非常不幸，DateFormat 的所有实现，包括 SimpleDateFormat 都不是线程安全的，因此你不应该在多线程序中使用，除非是在对外线程安全的环境中使用，如 将 SimpleDateFormat 限制在ThreadLocal 中。如果你不这么做，在解析或者格式化日期的时候，可能会获取到一个不正确的结果。因此，从日期、时间处理的所有实践来说，我强力推荐 joda-time 库。</p> <h3 id="_83、java-中如何格式化一个日期-如格式化为-ddmmyyyy的形式"><a href="#_83、java-中如何格式化一个日期-如格式化为-ddmmyyyy的形式" class="header-anchor">#</a> 83、Java 中如何格式化一个日期？如格式化为 ddMMyyyy的形式？</h3> <p>Java 中，可以使用 SimpleDateFormat 类或者 joda-time 库来格式日期。DateFormat 类允许你使用多种流行的格式来格式化日期。参见答案中的示例代码，代码中演示了将日期格式化成不同的格式，如 dd-MM-yyyy 或 ddMMyyyy。</p> <h3 id="_84、java-中-怎么在格式化的日期中显示时区"><a href="#_84、java-中-怎么在格式化的日期中显示时区" class="header-anchor">#</a> 84、Java 中，怎么在格式化的日期中显示时区？</h3> <p>使用SimpleDateFormat来实现格式化日期，但是DateFormat 的所有实现，包括 SimpleDateFormat 都不是线程安全的，因此你不应该在多线程序中使用，除非是在对外线程安全的环境中使用，如将SimpleDateFormat 限制在 ThreadLocal 中。如果你不这么做，在解析或者格式化日期的时候，可能会获取到一个不正确的结果。因此，从日期、时间处理的所有实践来说，强力推荐 joda-time 库。</p> <h3 id="_85、java-中-java-util-date-与-java-sql-date-有什么区别"><a href="#_85、java-中-java-util-date-与-java-sql-date-有什么区别" class="header-anchor">#</a> 85、Java 中 java.util.Date 与 java.sql.Date 有什么区别？</h3> <h3 id="_86、java-中-如何计算两个日期之间的差距"><a href="#_86、java-中-如何计算两个日期之间的差距" class="header-anchor">#</a> 86、Java 中，如何计算两个日期之间的差距？</h3> <h3 id="_87、java-中-如何将字符串-yyyymmdd-转换为日期"><a href="#_87、java-中-如何将字符串-yyyymmdd-转换为日期" class="header-anchor">#</a> 87、Java 中，如何将字符串 YYYYMMDD 转换为日期？</h3> <h3 id="_89、如何测试静态方法"><a href="#_89、如何测试静态方法" class="header-anchor">#</a> 89、如何测试静态方法？</h3> <p>可以使用 PowerMock 库来测试静态方法。</p> <h3 id="_90、怎么利用-junit-来测试一个方法的异常"><a href="#_90、怎么利用-junit-来测试一个方法的异常" class="header-anchor">#</a> 90、怎么利用 JUnit 来测试一个方法的异常？</h3> <p>对需要测试异常的代码使用try，catch语句块。比如：public void testException(){try{Long.parseLong(null);} catch(NumberFormatException expected){}}然后使用Junit的fail函数，对于没有抛出预期异常的代码</p> <h3 id="_91、你使用过哪个单元测试库来测试你的-java-程序"><a href="#_91、你使用过哪个单元测试库来测试你的-java-程序" class="header-anchor">#</a> 91、你使用过哪个单元测试库来测试你的 Java 程序？</h3> <h3 id="_92、-before-和-beforeclass-有什么区别"><a href="#_92、-before-和-beforeclass-有什么区别" class="header-anchor">#</a> 92、@Before 和 @BeforeClass 有什么区别？</h3> <p>@Before ：在每个测试方法之前都执行一次, 方法需要声明为public</p> <p>@beforeclass ：只在类中执行一次, 必须声明为public static</p> <h3 id="_93、怎么检查一个字符串只包含数字-解决方案"><a href="#_93、怎么检查一个字符串只包含数字-解决方案" class="header-anchor">#</a> 93、怎么检查一个字符串只包含数字？解决方案</h3> <p>用Java自带的函数、用正则表达式、用ascii码判断</p> <h3 id="_94、java-中如何利用泛型写一个-lru-缓存"><a href="#_94、java-中如何利用泛型写一个-lru-缓存" class="header-anchor">#</a> 94、Java 中如何利用泛型写一个 LRU 缓存？</h3> <p>这是一种混合的数据结构，我们需要在哈希表的基础上建立一个链表。但是Java已经为我们提供了这种形式的数据结构-LinkedHashMap！它甚至提供可覆盖回收策略的方法。唯一需要我们注意的事情是，改链表的顺序是插入的顺序，而不是访问的顺序。但是，有一个构造函数提供了一个选项，可以使用访问的顺序。</p> <h3 id="_95、写一段-java-程序将-byte-转换为-long"><a href="#_95、写一段-java-程序将-byte-转换为-long" class="header-anchor">#</a> 95、写一段 Java 程序将 byte 转换为 long？</h3> <h3 id="_96、在不使用-stringbuffer-的前提下-怎么反转一个字符串"><a href="#_96、在不使用-stringbuffer-的前提下-怎么反转一个字符串" class="header-anchor">#</a> 96、在不使用 StringBuffer 的前提下，怎么反转一个字符串？</h3> <h3 id="_97、java-中-怎么获取一个文件中单词出现的最高频率"><a href="#_97、java-中-怎么获取一个文件中单词出现的最高频率" class="header-anchor">#</a> 97、Java 中，怎么获取一个文件中单词出现的最高频率？</h3> <p>这是一道算法面试题，Java中文的比较多。</p> <p>1、将文件内容存入String字符串中。
2、利用split()函数分割字符串，因为直接替换英文空格或者,逗号分隔就可以了，中文类似，分隔得到一个数组。<br>
3、遍历数组中所有的单词，统计结果Map 中,key=单词，value=单词出现的次数。
4、使用TreeSet类型，对Map中的结果进行排序，依据统计次数。
5、输出最高的排序的前N名结果</p> <h3 id="_98、如何检查出两个给定的字符串是反序的"><a href="#_98、如何检查出两个给定的字符串是反序的" class="header-anchor">#</a> 98、如何检查出两个给定的字符串是反序的？</h3> <p>思路主要是，从开始字符，和另外一个从末尾字符比较，先判断长度是否相同，不同直接不可能反文。然后再比较。</p> <h3 id="_99、java-中-怎么打印出一个字符串的所有排列"><a href="#_99、java-中-怎么打印出一个字符串的所有排列" class="header-anchor">#</a> 99、Java 中，怎么打印出一个字符串的所有排列？</h3> <h3 id=""><a href="#" class="header-anchor">#</a></h3> <h3 id="_101、java-中如何将字符串转换为整数"><a href="#_101、java-中如何将字符串转换为整数" class="header-anchor">#</a> 101、Java 中如何将字符串转换为整数？</h3> <p>String s=&quot;123&quot;;</p> <p>int i;</p> <p>第一种方法：i=Integer.parseInt(s);</p> <p>第二种方法：i=Integer.valueOf(s).intValue();</p> <h3 id="_102、在没有使用临时变量的情况如何交换两个整数变量的值"><a href="#_102、在没有使用临时变量的情况如何交换两个整数变量的值" class="header-anchor">#</a> 102、在没有使用临时变量的情况如何交换两个整数变量的值？</h3> <p>加减法、乘除法、异或法</p> <h3 id="_103、接口是什么-为什么要使用接口而不是直接使用具体类"><a href="#_103、接口是什么-为什么要使用接口而不是直接使用具体类" class="header-anchor">#</a> 103、接口是什么？为什么要使用接口而不是直接使用具体类？</h3> <p>接口用于定义 API。它定义了类必须得遵循的规则。同时，它提供了一种抽象，因为客户端只使用接口，这样可以有多重实现，如 List 接口，你可以使用可随机访问的 ArrayList，也可以使用方便插入和删除的 LinkedList。接口中不允许写代码，以此来保证抽象，但是 Java 8 中你可以在接口声明静态的默认方法，这种方法是具体的。</p> <h3 id="_104、java-中-抽象类与接口之间有什么不同"><a href="#_104、java-中-抽象类与接口之间有什么不同" class="header-anchor">#</a> 104、Java 中，抽象类与接口之间有什么不同？</h3> <p>Java 中，抽象类和接口有很多不同之处，但是最重要的一个是 Java 中限制一个类只能继承一个类，但是可以实现多个接口。抽象类可以很好的定义一个家族类的默认行为，而接口能更好的定义类型，有助于后面实现多态机制。</p> <h3 id="_105、除了单例模式-你在生产环境中还用过什么设计模式"><a href="#_105、除了单例模式-你在生产环境中还用过什么设计模式" class="header-anchor">#</a> 105、除了单例模式，你在生产环境中还用过什么设计模式？</h3> <p>这需要根据你的经验来回答。一般情况下，你可以说依赖注入，工厂模式，装饰模式或者观察者模式，随意选择你使用过的一种即可。不过你要准备回答接下的基于你选择的模式的问题。</p> <h3 id="_106、你能解释一下里氏替换原则吗"><a href="#_106、你能解释一下里氏替换原则吗" class="header-anchor">#</a> 106、你能解释一下里氏替换原则吗?</h3> <p>首先，这是编译器的要求，如果不这么做，无法通过编译。其次，面向对象的编程，其中继承有个大原则，任何子类的对象都可以当成父类的对象使用。</p> <h3 id="_107、什么情况下会违反迪米特法则-为什么会有这个问题"><a href="#_107、什么情况下会违反迪米特法则-为什么会有这个问题" class="header-anchor">#</a> 107、什么情况下会违反迪米特法则？为什么会有这个问题？</h3> <p>迪米特法则建议“只和朋友说话，不要陌生人说话”，以此来减少类之间的耦合。</p> <h3 id="_108、适配器模式是什么-什么时候使用"><a href="#_108、适配器模式是什么-什么时候使用" class="header-anchor">#</a> 108、适配器模式是什么？什么时候使用？</h3> <p>适配器模式提供对接口的转换。如果你的客户端使用某些接口，但是你有另外一些接口，你就可以写一个适配去来连接这些接口。</p> <h3 id="_109、什么是-依赖注入-和-控制反转-为什么有人使用"><a href="#_109、什么是-依赖注入-和-控制反转-为什么有人使用" class="header-anchor">#</a> 109、什么是“依赖注入”和“控制反转”？为什么有人使用？</h3> <p>控制反转（IOC）是 Spring 框架的核心思想，用我自己的话说，就是你要做一件事，别自己可劲 new 了，你就说你要干啥，然后外包出去就好~依赖注入（DI） 在我浅薄的想法中，就是通过接口的引用和构造方法的表达，将一些事情整好了反过来传给需要用到的地方~</p> <h3 id="_110、抽象类是什么-它与接口有什么区别-你为什么要使用过抽象类"><a href="#_110、抽象类是什么-它与接口有什么区别-你为什么要使用过抽象类" class="header-anchor">#</a> 110、抽象类是什么？它与接口有什么区别？你为什么要使用过抽象类？</h3> <p>a.接口用于规范，抽象类用于共性.</p> <p>b.声明方法的存在而不去实现它的类被叫做抽象类</p> <p>c.接口（interface）是抽象类的变体。在接口中，所有方法都是抽象的。</p> <h3 id="_111、构造器注入和-setter-依赖注入-那种方式更好"><a href="#_111、构造器注入和-setter-依赖注入-那种方式更好" class="header-anchor">#</a> 111、构造器注入和 setter 依赖注入，那种方式更好？</h3> <p>每种方式都有它的缺点和优点。构造器注入保证所有的注入都被初始化，但是setter 注入提供更好的灵活性来设置可选依赖。如果使用 XML 来描述依赖，Setter 注入的可读写会更强。经验法则是强制依赖使用构造器注入，可选依赖使用 setter 注入。</p> <h3 id="_112、依赖注入和工程模式之间有什么不同"><a href="#_112、依赖注入和工程模式之间有什么不同" class="header-anchor">#</a> 112、依赖注入和工程模式之间有什么不同？</h3> <p>虽然两种模式都是将对象的创建从应用的逻辑中分离，但是依赖注入比工程模式更清晰。通过依赖注入，你的类就是 POJO，它只知道依赖而不关心它们怎么获取。使用工厂模式，你的类需要通过工厂来获取依赖。因此，使用 DI 会比使用工厂模式更容易测试。</p> <h3 id="_113、适配器模式和装饰器模式有什么区别"><a href="#_113、适配器模式和装饰器模式有什么区别" class="header-anchor">#</a> 113、适配器模式和装饰器模式有什么区别？</h3> <p>虽然适配器模式和装饰器模式的结构类似，但是每种模式的出现意图不同。适配器模式被用于桥接两个接口，而装饰模式的目的是在不修改类的情况下给类增加新的功能。</p> <h3 id="_114、适配器模式和代理模式之前有什么不同"><a href="#_114、适配器模式和代理模式之前有什么不同" class="header-anchor">#</a> 114、适配器模式和代理模式之前有什么不同？</h3> <p>这个问题与前面的类似，适配器模式和代理模式的区别在于他们的意图不同。由于适配器模式和代理模式都是封装真正执行动作的类，因此结构是一致的，但是适配器模式用于接口之间的转换，而代理模式则是增加一个额外的中间层，以便支持分配、控制或智能访问。</p> <h3 id="_115、什么是模板方法模式"><a href="#_115、什么是模板方法模式" class="header-anchor">#</a> 115、什么是模板方法模式？</h3> <p>模板方法提供算法的框架，你可以自己去配置或定义步骤。例如，你可以将排序算法看做是一个模板。它定义了排序的步骤，但是具体的比较，可以使用Comparable 或者其语言中类似东西，具体策略由你去配置。列出算法概要的方法就是众所周知的模板方法。</p></div></section> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">2021-9-2: </span> <span class="time">9/3/2021, 6:20:18 PM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev"><a href="/blogs/audition/java/java_base/base_6.html" class="prev">
            java基础面试题六
          </a></span> <span class="next"><a href="/blogs/audition/java/java_base/base_8.html">
            java基础面试题八
          </a></span></p></div> <div class="comments-wrapper"><!----></div> <ul class="side-bar sub-sidebar-wrapper" style="width:12rem;" data-v-70334359><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_81、说出几条-java-中方法重载的最佳实践" class="sidebar-link reco-side-_81、说出几条-java-中方法重载的最佳实践" data-v-70334359>81、说出几条 Java 中方法重载的最佳实践？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_82、在多线程环境下-simpledateformat-是线程安全的吗" class="sidebar-link reco-side-_82、在多线程环境下-simpledateformat-是线程安全的吗" data-v-70334359>82、在多线程环境下，SimpleDateFormat 是线程安全的吗？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_83、java-中如何格式化一个日期-如格式化为-ddmmyyyy的形式" class="sidebar-link reco-side-_83、java-中如何格式化一个日期-如格式化为-ddmmyyyy的形式" data-v-70334359>83、Java 中如何格式化一个日期？如格式化为 ddMMyyyy的形式？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_84、java-中-怎么在格式化的日期中显示时区" class="sidebar-link reco-side-_84、java-中-怎么在格式化的日期中显示时区" data-v-70334359>84、Java 中，怎么在格式化的日期中显示时区？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_85、java-中-java-util-date-与-java-sql-date-有什么区别" class="sidebar-link reco-side-_85、java-中-java-util-date-与-java-sql-date-有什么区别" data-v-70334359>85、Java 中 java.util.Date 与 java.sql.Date 有什么区别？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_86、java-中-如何计算两个日期之间的差距" class="sidebar-link reco-side-_86、java-中-如何计算两个日期之间的差距" data-v-70334359>86、Java 中，如何计算两个日期之间的差距？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_87、java-中-如何将字符串-yyyymmdd-转换为日期" class="sidebar-link reco-side-_87、java-中-如何将字符串-yyyymmdd-转换为日期" data-v-70334359>87、Java 中，如何将字符串 YYYYMMDD 转换为日期？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_89、如何测试静态方法" class="sidebar-link reco-side-_89、如何测试静态方法" data-v-70334359>89、如何测试静态方法？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_90、怎么利用-junit-来测试一个方法的异常" class="sidebar-link reco-side-_90、怎么利用-junit-来测试一个方法的异常" data-v-70334359>90、怎么利用 JUnit 来测试一个方法的异常？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_91、你使用过哪个单元测试库来测试你的-java-程序" class="sidebar-link reco-side-_91、你使用过哪个单元测试库来测试你的-java-程序" data-v-70334359>91、你使用过哪个单元测试库来测试你的 Java 程序？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_92、-before-和-beforeclass-有什么区别" class="sidebar-link reco-side-_92、-before-和-beforeclass-有什么区别" data-v-70334359>92、@Before 和 @BeforeClass 有什么区别？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_93、怎么检查一个字符串只包含数字-解决方案" class="sidebar-link reco-side-_93、怎么检查一个字符串只包含数字-解决方案" data-v-70334359>93、怎么检查一个字符串只包含数字？解决方案</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_94、java-中如何利用泛型写一个-lru-缓存" class="sidebar-link reco-side-_94、java-中如何利用泛型写一个-lru-缓存" data-v-70334359>94、Java 中如何利用泛型写一个 LRU 缓存？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_95、写一段-java-程序将-byte-转换为-long" class="sidebar-link reco-side-_95、写一段-java-程序将-byte-转换为-long" data-v-70334359>95、写一段 Java 程序将 byte 转换为 long？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_96、在不使用-stringbuffer-的前提下-怎么反转一个字符串" class="sidebar-link reco-side-_96、在不使用-stringbuffer-的前提下-怎么反转一个字符串" data-v-70334359>96、在不使用 StringBuffer 的前提下，怎么反转一个字符串？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_97、java-中-怎么获取一个文件中单词出现的最高频率" class="sidebar-link reco-side-_97、java-中-怎么获取一个文件中单词出现的最高频率" data-v-70334359>97、Java 中，怎么获取一个文件中单词出现的最高频率？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_98、如何检查出两个给定的字符串是反序的" class="sidebar-link reco-side-_98、如何检查出两个给定的字符串是反序的" data-v-70334359>98、如何检查出两个给定的字符串是反序的？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_99、java-中-怎么打印出一个字符串的所有排列" class="sidebar-link reco-side-_99、java-中-怎么打印出一个字符串的所有排列" data-v-70334359>99、Java 中，怎么打印出一个字符串的所有排列？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#" class="sidebar-link reco-side-" data-v-70334359></a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_101、java-中如何将字符串转换为整数" class="sidebar-link reco-side-_101、java-中如何将字符串转换为整数" data-v-70334359>101、Java 中如何将字符串转换为整数？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_102、在没有使用临时变量的情况如何交换两个整数变量的值" class="sidebar-link reco-side-_102、在没有使用临时变量的情况如何交换两个整数变量的值" data-v-70334359>102、在没有使用临时变量的情况如何交换两个整数变量的值？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_103、接口是什么-为什么要使用接口而不是直接使用具体类" class="sidebar-link reco-side-_103、接口是什么-为什么要使用接口而不是直接使用具体类" data-v-70334359>103、接口是什么？为什么要使用接口而不是直接使用具体类？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_104、java-中-抽象类与接口之间有什么不同" class="sidebar-link reco-side-_104、java-中-抽象类与接口之间有什么不同" data-v-70334359>104、Java 中，抽象类与接口之间有什么不同？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_105、除了单例模式-你在生产环境中还用过什么设计模式" class="sidebar-link reco-side-_105、除了单例模式-你在生产环境中还用过什么设计模式" data-v-70334359>105、除了单例模式，你在生产环境中还用过什么设计模式？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_106、你能解释一下里氏替换原则吗" class="sidebar-link reco-side-_106、你能解释一下里氏替换原则吗" data-v-70334359>106、你能解释一下里氏替换原则吗?</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_107、什么情况下会违反迪米特法则-为什么会有这个问题" class="sidebar-link reco-side-_107、什么情况下会违反迪米特法则-为什么会有这个问题" data-v-70334359>107、什么情况下会违反迪米特法则？为什么会有这个问题？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_108、适配器模式是什么-什么时候使用" class="sidebar-link reco-side-_108、适配器模式是什么-什么时候使用" data-v-70334359>108、适配器模式是什么？什么时候使用？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_109、什么是-依赖注入-和-控制反转-为什么有人使用" class="sidebar-link reco-side-_109、什么是-依赖注入-和-控制反转-为什么有人使用" data-v-70334359>109、什么是“依赖注入”和“控制反转”？为什么有人使用？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_110、抽象类是什么-它与接口有什么区别-你为什么要使用过抽象类" class="sidebar-link reco-side-_110、抽象类是什么-它与接口有什么区别-你为什么要使用过抽象类" data-v-70334359>110、抽象类是什么？它与接口有什么区别？你为什么要使用过抽象类？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_111、构造器注入和-setter-依赖注入-那种方式更好" class="sidebar-link reco-side-_111、构造器注入和-setter-依赖注入-那种方式更好" data-v-70334359>111、构造器注入和 setter 依赖注入，那种方式更好？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_112、依赖注入和工程模式之间有什么不同" class="sidebar-link reco-side-_112、依赖注入和工程模式之间有什么不同" data-v-70334359>112、依赖注入和工程模式之间有什么不同？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_113、适配器模式和装饰器模式有什么区别" class="sidebar-link reco-side-_113、适配器模式和装饰器模式有什么区别" data-v-70334359>113、适配器模式和装饰器模式有什么区别？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_114、适配器模式和代理模式之前有什么不同" class="sidebar-link reco-side-_114、适配器模式和代理模式之前有什么不同" data-v-70334359>114、适配器模式和代理模式之前有什么不同？</a></li><li class="level-3" data-v-70334359><a href="/blogs/audition/java/java_base/base_7.html#_115、什么是模板方法模式" class="sidebar-link reco-side-_115、什么是模板方法模式" data-v-70334359>115、什么是模板方法模式？</a></li></ul></main> <!----></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-c6073ba8 data-v-c6073ba8><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-c6073ba8><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-c6073ba8></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-c6073ba8></path></svg></div><!----><canvas id="vuepress-canvas-cursor"></canvas></div></div>
    <script src="/assets/js/app.7029ddab.js" defer></script><script src="/assets/js/3.ebaa3085.js" defer></script><script src="/assets/js/1.8ce67e8c.js" defer></script><script src="/assets/js/57.0cea0cfa.js" defer></script>
  </body>
</html>
